4 * Support functions for dealing with user accounts at a database level
7 * @subpackage Maintenance
8 * @author Rob Church <robchur@gmail.com>
12 * Count the number of edits the specified user has made
14 * @param integer $user User ID
15 * @param bool $slave Whether or not a slave can be used
18 function CountEdits( $user, $slave = true ) {
19 $dbw =& wfGetDB( $slave ? DB_SLAVE: DB_MASTER );
21 $res = $dbw->select( 'revision', 'COUNT(rev_id) AS count', array( 'rev_user' => $user ) );
22 $row = $dbw->fetchObject( $res );
25 $res = $dbw->select( 'archive', 'COUNT(*) AS count', array( 'ar_user' => $user ) );
26 $row = $dbw->fetchObject( $res );
27 $count += $row->count;
33 * Count the number of images the specified user has uploaded
35 * @param integer $user User ID
36 * @param bool $slave Whether or not a slave can be used
39 function CountImages( $user, $slave = true ) {
40 $dbw =& wfGetDB( $slave ? DB_SLAVE: DB_MASTER );
41 # Count current images
42 $res = $dbw->select( 'image', 'COUNT(rev_id) AS count', array( 'img_user' => $user ) );
43 $row = $dbw->fetchObject( $res );
46 $res = $dbw->select( 'oldimage', 'COUNT(*) AS count', array( 'oi_user' => $user ) );
47 $row = $dbw->fetchObject( $res );
48 $count += $row->count;
54 * Retrieve all valid user IDs
59 $dbr =& wfGetDB( DB_SLAVE );
60 $res = $dbr->select( 'user', 'user_id' );
62 while( $row = $dbr->fetchObject( $res ) ) {
63 $users[] = $row->user_id;
69 * Resolve a username to a user ID
71 * @param string $username Username
74 function GetUserID( $username ) {
75 $dbr =& wfGetDB( DB_SLAVE );
76 $res = $dbr->select( 'user', 'user_id', array( 'user_name' => '"' . $username . '"' ) );
77 if( $res !== false ) {
78 $row = $dbr->fetchObject( $res );
79 return( $row->user_id );
86 * Delete one or more users
88 * @param mixed $users Single integer or array of integers corresponding to user IDs
91 function DeleteUsers( $users ) {
92 $dbw =& wfGetDB( DB_MASTER );
94 foreach( $users as $user ) {
95 $dbw->delete( 'user', array( 'user_id' => $user ) );
102 * Add a user to the named group(s)
104 * @param integer $user User ID
105 * @param mixed $groups Single string or array of strings corresponding to group names
108 function SetUserGroups( $user, $groups ) {
109 $dbw =& wfGetDB( DB_MASTER );
110 foreach( $groups as $group ) {
111 $row = array( 'ug_user' => $user, 'ug_group' => $group );
112 if( !$dbw->insert( 'user_groups', $row, 'SetUserGroups' ) ) {